home *** CD-ROM | disk | FTP | other *** search
- ***************************************************************************************
- **EXAMPLE MENU CONTROLLERS FOR EDIT EXAMPLE FOR FANTASM BEGINNERS GUIDE *
- ***************************************************************************************
-
- ******************SECTION 18***********************************************************
- *************************************MAKE RES MENU*************************************
- MAKERESMENU: CLR.L -(SP) GETMENU RETURNS A LONG
- **BUILD THE APPLE MENU
- MOVE.W #APPLE_MEN_NUM,-(SP) RESOURCE ID OF APPLE MENU
- DC.W GETMENU GET APPLE MENU RESOURCE
- MOVE.L (SP)+,APPLEMENU(A6) SAVE HANDLE OF APPLE MENU
- MOVE.L APPLEMENU(A6),-(SP)
- MOVE.L #"DRVR",-(SP)
- DC.W ADDRESMENU FIND ALL APPLE MENU ENTRIES AND ADD THEM
- **GET FILE MENU FROM RESOURCES
- CLR.L -(SP)
- MOVE.W #FILE_MEN_NUM,-(SP) SAME FOR FILE MENU
- DC.W GETMENU
- MOVE.L (SP)+,FILEMENU(A6)
- **GET EDIT MENU FROM RESOURCES
- CLR.L -(SP)
- MOVE.W #EDIT_MEN_NUM,-(SP) AND EDIT MENU
- DC.W GETMENU
- MOVE.L (SP)+,EDITMENU(A6)
- **INSERT THE MENUS
- MOVE.L APPLEMENU(A6),-(SP) INSERT THEM INTO MENU BAR
- CLR.W -(SP)
- DC.W INSERTMENU
- MOVE.L FILEMENU(A6),-(SP)
- CLR.W -(SP)
- DC.W INSERTMENU
- MOVE.L EDITMENU(A6),-(SP)
- CLR.W -(SP)
- DC.W INSERTMENU
- **DRAW MENU BAR
- DC.W DRAWMENUBAR DRAW THE MENU BAR
- RTS
-
- ******************SECTION 19*******************************************************
- **********************************DO MENU******************************************
- **NEEDS MENU INFO IN D0.L(UPPER WORD = MENU RES ID. LOWER WORD=ITEM NUMBER)
- DO_MENU: LINK A4,#-100 SOME SPACE FOR APPLE MENU (DESC ACCESSORIES)
- MOVE.W D0,D6 SAVE MENU RES ID AND ITEM NUMBER
- SWAP D0 GET MENU ID IN LOWER WORD OF D0
- MOVE.W D0,D7 SAVE MENU ID IN D7
- MOVE.W D7,MENU AND IN MENU
- MOVE.W D6,MENU_ITEM GET ITEM IN MENU_ITEM
- CMPI.W #APPLE_MEN_NUM,D7 ID=APPLE MENU?
- BNE NOT_APPLE NOPE
- **HERE WE'VE SLECTED SOMETHING FROM THE APPLE MENU
- CMPI.W #1,D6 YUP - ITEM=1 (ABOUT THIS EXAMPLE)?
- BNE.S NOT_ABOUT_FANT NOPE
- MOVE.W #ABOUT,D0 YEP, SHOW THE ABOUT ALERT
- BSR DO_ALERT ABOUT FANTASM ALERT
- BRA END_MENUS BYE.....
- **RUN DESK ACC
- NOT_ABOUT_FANT: MOVE.L APPLEMENU(A6),-(SP) HANDLE OF APPLEMENU
- MOVE.W D6,-(SP) WHICH ITEM
- PEA DESKNAME,-(SP) BUFFER FOR NAME OF ITEM
- DC.W GETITEM GET NAME
-
- PEA DESKNAME PUSH NAME
- DC.W OPENDESKACC RUN DESK ACC
-
- MOVE.L WINDPTR(A6),-(SP) SET PORT TO MY
- DC.W SETPORT WINDOW
- BRA END_MENUS BYE....
-
- NOT_APPLE: CMPI.W #FILE_MEN_NUM,D7 FILE MENU?
- BNE NOT_FILE NOPE
- **FILE MENU
- CMPI.W #1,D6 ITEM=1 (NEW)?
- BNE.S NOT_NEW NAH
- *******************************NEW****************************************************
- TST.W DIRTY(A6) HAVE WE MODIFIED THE CURRENT FILE?
- BEQ.S NEW_OK NO
- BSR CLOSE_TE YES, SAVE IT
- NEW_OK: BSR SHUTWINDOW SELECTED NEW FROM FILE MENU
- LEA NO_W_TITLE,A0
- BSR DRAW_WINDOW OPEN NEW WINDOW
- CLR.W VOLPTR(A6)
- BRA END_MENUS
- NOT_NEW: CMPI.W #2,D6
- BNE NOT_OPEN
- *******************************OPEN***************************************************
- TST.W DIRTY(A6)
- BEQ.S NO_CURRENT
- BSR CLOSE_TE SAVE THE OLD FILE
- NO_CURRENT: LEA FILENAME,A0
- BSR OPENSELECTOR RETURNS D0=VOLREF OR 0
- MOVE.W D0,VOLPTR(A6)
- TST.L D0
- BEQ END_MENUS
- SAVEAS_ENT:
- **GOT A VALID FILNAME
- BSR SHUTWINDOW close old window
- LEA FILENAME,A0
- BSR DRAW_WINDOW OPEN NEW WINDO WITH THIS NAME
- LEA FILENAME,A0
- MOVE.W VOLPTR(A6),D0
- **FIND TE BUFFER
- MOVE.L A4,-(SP)
- BSR READ_TEFILE
- MOVE.L (SP)+,A4
- TST.W D0 READFILE OK=0
- BEQ END_MENUS
- BPL.S READ_ERROR
- MOVE.W #TOO_BIG,D0
- BSR DO_ALERT
- BRA END_MENUS
- READ_ERROR: MOVE.W #F_ERROR,D0
- BSR DO_ALERT
- BRA END_MENUS
- *************************CLOSE*******************************************************
- NOT_OPEN: CMPI.W #3,D6 MENU ITEM 3=CLOSE
- BNE NOT_CLOSE
- *CHECK DIRTY, IF 1 ASK IF TO SAVE THE FILE
- TST.W DIRTY(A6)
- BEQ.S NO_FILE_TO_SAV FILE HASNT BEEN MODIFIED
- BSR CLOSE_TE
- NO_FILE_TO_SAV: BSR SHUTWINDOW
- LEA NO_W_TITLE,A0
- BSR DRAW_WINDOW
- BRA END_MENUS
-
- ***CLOSE TE ASKS IF THE USER WANTS TO SAVE THE FILE
- **IF SO THE FILE IS SAVED, AND THE WINDOW CLEARED.
-
- CLOSE_TE: MOVE.W #ASK_SAVE,D0
- BSR DO_ALERT SAVE THE FILE? 1=YES
- CMPI.W #1,D0
- BEQ.S SAVE_NOW
- RTS
- SAVE_NOW: MOVE.L WINDPTR(A6),-(SP)
- PEA PFILENAME
- DC.W GETWTITLE
- PEA PFILENAME
- PEA FILENAME
- BSR PTOCSTR
- ADDQ.L #8,SP
- MOVE.W VOLPTR(A6),D0
- TST.W D0 DO WE HAVE A FILE REF?
- BNE.S SAVE_WINDOW YES, USE WINDOW NAME
-
- **WE NEED TO GET A FILENAME
- LEA FILENAME,A0
- LEA WRITE_STRING,A1
- BSR WRITE_SELECT
- TST.L D0
- BNE.S DO_SAVE
- RTS CANCELLED
- DO_SAVE: MOVE.W D0,VOLPTR(A6) SAVE VOLPTR
- SAVE_WINDOW: MOVE.W VOLPTR(A6),D0
- LEA FILENAME,A0
- MOVE.L A4,-(SP) SAVE LOCAL POINTER
- BSR SAVE_TE_FILE
- MOVE.L (SP)+,A4
- CLR.W VOLPTR(A6) WE HAVE NO FILE
- RTS
- ******************************************SAVE******************************************
- NOT_CLOSE: CMPI.W #4,D6
- BNE NOT_SAVE
-
- TST.W DIRTY(A6)
- BEQ END_MENUS FILE HASNT BEEN MODIFIED
- MOVE.L WINDPTR(A6),-(SP)
- PEA PFILENAME
- DC.W GETWTITLE
- PEA PFILENAME
- PEA FILENAME
- BSR PTOCSTR
- ADDQ.L #8,SP
-
- MOVE.W VOLPTR(A6),D0
- TST.W D0 DO WE HAVE A FILE REF?
- BNE SAVE_AS_W YES, USE WINDOW NAME
-
- **WE NEED TO GET A FILENAME
- LEA FILENAME,A0
- LEA WRITE_STRING,A1
- BSR WRITE_SELECT
- TST.L D0
- BEQ END_MENUS CANCELLED
- MOVE.W D0,VOLPTR(A6)
- LEA FILENAME,A0
- MOVE.L A4,-(SP)
- BSR SAVE_TE_FILE
- MOVE.L (SP)+,A4
- CLR.W DIRTY(A6)
- LEA FILENAME,A3
- BSR SET_W_TITLE
- BRA END_MENUS
-
- DO_SAVE_W: MOVE.W D0,VOLPTR(A6)
- SAVE_AS_W: LEA FILENAME,A0
- MOVE.L A4,-(SP) SAVE LOCAL POINTER
- BSR SAVE_TE_FILE
- MOVE.L (SP)+,A4
- CLR.W DIRTY(A6)
- BRA END_MENUS
-
-
- NOT_SAVE: CMPI.W #5,D6
- BNE NOT_SAVE_AS
-
- *******************************************SAVE AS**************************************
- **WE NEED TO GET A FILENAME
- LEA FILENAME,A0
- LEA WRITE_STRING,A1
- BSR WRITE_SELECT
- TST.L D0
- BEQ END_MENUS CANCELLED
- MOVE.W D0,VOLPTR(A6) SAVE VOLPTR
- SAVE_IT: MOVE.W VOLPTR(A6),D0
- LEA FILENAME,A0
- MOVE.L A4,-(SP) SAVE LOCAL POINTER
- BSR SAVE_TE_FILE
- MOVE.L (SP)+,A4
- LEA FILENAME,A3
- BSR SET_W_TITLE
- BRA END_MENUS
-
- NOT_SAVE_AS:
- NOT_SAVE_PREF: CMPI.W #7,D6 QUIT?
- BNE END_MENUS NO
- *******************************************QUIT*****************************************
- TST.W DIRTY(A6)
- BEQ QUIT_OK
- BSR CLOSE_TE SAVE THE OLD FILE
- QUIT_OK: CLR.W -(SP)
- DC.W HILITEMENU
- MOVEQ #1,D0
- UNLK A4
- RTS
- ****************************************END OF FILE MENU********************************
-
- ******************SECTION 20************************************************************
- ****************************************edit menu***************************************
- NOT_FILE: CMPI.W #EDIT_MEN_NUM,D7
- BNE NOT_EDIT
- CMPI.W #1,D6
- BNE.S NOT_CUT
- MOVE.L TEHND(A6),-(SP)
- DC.W TECUT
- BRA END_BLOCK
- NOT_CUT: CMPI.W #2,D6
- BNE.S NOT_COPY
- MOVE.L TEHND(A6),-(SP)
- DC.W TECOPY
- BRA END_BLOCK
- NOT_COPY: CMPI.W #3,D6
- BNE.S NOT_PASTE
- MOVE.L TEHND(A6),-(SP)
- DC.W TEPASTE
- BRA.S END_BLOCK
- NOT_PASTE: CMPI.W #4,D6
- BNE.S NOT_DELETE
- MOVE.L TEHND(A6),-(SP)
- DC.W TEDELETE
- BRA.S END_BLOCK
- NOT_DELETE: CMPI.W #5,D6
- BNE END_MENUS
- CLR.L -(SP)
- MOVE.L #-1,-(SP)
- MOVE.L TEHND(A6),-(SP)
- DC.W TESETSELECT SELECT ALL
- END_BLOCK: BSR SETSCROLLMAX
- BRA END_MENUS
-
- **************************END OF EDIT MENU*************************************
- NOT_EDIT: *MENUS WOULD BE EXPANDED HERE
- END_MENUS: CLR.W -(SP)
- DC.W HILITEMENU UNLIGHT MENU TITLE
- CLR.L D0
- UNLK A4
- RTS
-
- MENU: DS.W 1
- MENU_ITEM: DS.W 1
- DESKNAME: DS.B 256
-
- EVEN
-